package br.com.knowledge.persistence.hibernate.entities;

import java.util.HashSet;
import java.util.Set;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import org.hibernate.annotations.GenericGenerator;

/**
 * BcdColunas entity. @author MyEclipse Persistence Tools
 */
@Entity
@Table(name = "bcd_colunas", schema = "public")
public class BcdColunas implements java.io.Serializable {

	// Fields

	private Integer id;
	private BcdTabelas bcdTabelas;
	//	private AcdTpdadosgdb acdTpdadosgdb;
	private String nome;
	private Boolean indnulo;
	private Double tamanho;
	private Boolean indchave;
	private Set<FntMetodoobjeto> fntMetodoobjetos = new HashSet<FntMetodoobjeto>(
			0);
	private Set<AbdStroredprocedureinferencia> abdStroredprocedureinferencias = new HashSet<AbdStroredprocedureinferencia>(
			0);
	private Set<AbdTriggerinferencia> abdTriggerinferencias = new HashSet<AbdTriggerinferencia>(
			0);
	private Set<AbdTriggerinferencia> abdTriggerinferencias_1 = new HashSet<AbdTriggerinferencia>(
			0);
	private Set<FntMetodoobjeto> fntMetodoobjetos_1 = new HashSet<FntMetodoobjeto>(
			0);
	private Set<FntMetodofuncaoglobal> fntMetodofuncaoglobals = new HashSet<FntMetodofuncaoglobal>(
			0);
	private Set<FntMetodofuncaoglobal> fntMetodofuncaoglobals_1 = new HashSet<FntMetodofuncaoglobal>(
			0);
	private Set<AbdStroredprocedureinferencia> abdStroredprocedureinferencias_1 = new HashSet<AbdStroredprocedureinferencia>(
			0);
	private Set<FntMetodoclasse> fntMetodoclasses = new HashSet<FntMetodoclasse>(
			0);
	private Set<BcdColunareferencia> bcdColunareferencias = new HashSet<BcdColunareferencia>(
			0);
	private Set<FntMetodoclasse> fntMetodoclasses_1 = new HashSet<FntMetodoclasse>(
			0);
	private Set<BcdColunareferencia> bcdColunareferencias_1 = new HashSet<BcdColunareferencia>(
			0);
	private Set<BcdColunareferencia> bcdColunareferencias_2 = new HashSet<BcdColunareferencia>(
			0);
	private Set<AbfMetodoobjetocoluna> abfMetodoObjetoColuna = new HashSet<AbfMetodoobjetocoluna>();

	// Constructors

	/** default constructor */
	public BcdColunas() {
	}

	/** minimal constructor */
	public BcdColunas(BcdTabelas bcdTabelas, String nome) {
		this.bcdTabelas = bcdTabelas;
		this.nome = nome;
	}

	/** full constructor */
	public BcdColunas(
			BcdTabelas bcdTabelas,
			//		AcdTpdadosgdb acdTpdadosgdb,
			String nome,
			Boolean indnulo,
			Double tamanho,
			Boolean indchave,
			Set<FntMetodoobjeto> fntMetodoobjetos,
			Set<AbdStroredprocedureinferencia> abdStroredprocedureinferencias,
			Set<AbdTriggerinferencia> abdTriggerinferencias,
			Set<AbdTriggerinferencia> abdTriggerinferencias_1,
			Set<FntMetodoobjeto> fntMetodoobjetos_1,
			Set<FntMetodofuncaoglobal> fntMetodofuncaoglobals,
			Set<FntMetodofuncaoglobal> fntMetodofuncaoglobals_1,
			Set<AbdStroredprocedureinferencia> abdStroredprocedureinferencias_1,
			Set<FntMetodoclasse> fntMetodoclasses,
			Set<BcdColunareferencia> bcdColunareferencias,
			Set<FntMetodoclasse> fntMetodoclasses_1,
			Set<BcdColunareferencia> bcdColunareferencias_1,
			Set<BcdColunareferencia> bcdColunareferencias_2) {
		this.bcdTabelas = bcdTabelas;
		//		this.acdTpdadosgdb = acdTpdadosgdb;
		this.nome = nome;
		this.indnulo = indnulo;
		this.tamanho = tamanho;
		this.indchave = indchave;
		this.fntMetodoobjetos = fntMetodoobjetos;
		this.abdStroredprocedureinferencias = abdStroredprocedureinferencias;
		this.abdTriggerinferencias = abdTriggerinferencias;
		this.abdTriggerinferencias_1 = abdTriggerinferencias_1;
		this.fntMetodoobjetos_1 = fntMetodoobjetos_1;
		this.fntMetodofuncaoglobals = fntMetodofuncaoglobals;
		this.fntMetodofuncaoglobals_1 = fntMetodofuncaoglobals_1;
		this.abdStroredprocedureinferencias_1 = abdStroredprocedureinferencias_1;
		this.fntMetodoclasses = fntMetodoclasses;
		this.bcdColunareferencias = bcdColunareferencias;
		this.fntMetodoclasses_1 = fntMetodoclasses_1;
		this.bcdColunareferencias_1 = bcdColunareferencias_1;
		this.bcdColunareferencias_2 = bcdColunareferencias_2;
	}

	// Property accessors
	@GenericGenerator(name = "generator", strategy = "increment")
	@Id
	@GeneratedValue(generator = "generator")
	@Column(name = "id", unique = true, nullable = false)
	public Integer getId() {
		return this.id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "bcd_tabelas_id", nullable = false)
	public BcdTabelas getBcdTabelas() {
		return this.bcdTabelas;
	}

	public void setBcdTabelas(BcdTabelas bcdTabelas) {
		this.bcdTabelas = bcdTabelas;
	}

	/*@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "idtpdadosgdb")
	public AcdTpdadosgdb getAcdTpdadosgdb() {
		return this.acdTpdadosgdb;
	}

	public void setAcdTpdadosgdb(AcdTpdadosgdb acdTpdadosgdb) {
		this.acdTpdadosgdb = acdTpdadosgdb;
	}*/

	@Column(name = "nome", nullable = false, length = 50)
	public String getNome() {
		return this.nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	@Column(name = "indnulo")
	public Boolean getIndnulo() {
		return this.indnulo;
	}

	public void setIndnulo(Boolean indnulo) {
		this.indnulo = indnulo;
	}

	@Column(name = "tamanho", precision = 10)
	public Double getTamanho() {
		return this.tamanho;
	}

	public void setTamanho(Double tamanho) {
		this.tamanho = tamanho;
	}

	@Column(name = "indchave")
	public Boolean getIndchave() {
		return this.indchave;
	}

	public void setIndchave(Boolean indchave) {
		this.indchave = indchave;
	}

	@ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "bcdColunases")
	public Set<FntMetodoobjeto> getFntMetodoobjetos() {
		return this.fntMetodoobjetos;
	}

	public void setFntMetodoobjetos(Set<FntMetodoobjeto> fntMetodoobjetos) {
		this.fntMetodoobjetos = fntMetodoobjetos;
	}

	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "bcdColunas")
	public Set<AbdStroredprocedureinferencia> getAbdStroredprocedureinferencias() {
		return this.abdStroredprocedureinferencias;
	}

	public void setAbdStroredprocedureinferencias(
			Set<AbdStroredprocedureinferencia> abdStroredprocedureinferencias) {
		this.abdStroredprocedureinferencias = abdStroredprocedureinferencias;
	}

	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "bcdColunas")
	public Set<AbdTriggerinferencia> getAbdTriggerinferencias() {
		return this.abdTriggerinferencias;
	}

	public void setAbdTriggerinferencias(
			Set<AbdTriggerinferencia> abdTriggerinferencias) {
		this.abdTriggerinferencias = abdTriggerinferencias;
	}

	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "bcdColunas")
	public Set<AbdTriggerinferencia> getAbdTriggerinferencias_1() {
		return this.abdTriggerinferencias_1;
	}

	public void setAbdTriggerinferencias_1(
			Set<AbdTriggerinferencia> abdTriggerinferencias_1) {
		this.abdTriggerinferencias_1 = abdTriggerinferencias_1;
	}

	@ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
	@JoinTable(name = "abf_metodoobjetocoluna", schema = "public", joinColumns = { @JoinColumn(name = "bcd_colunas_id", nullable = false, updatable = false) }, inverseJoinColumns = { @JoinColumn(name = "fnt_metodoobjeto_id", nullable = false, updatable = false) })
	public Set<FntMetodoobjeto> getFntMetodoobjetos_1() {
		return this.fntMetodoobjetos_1;
	}

	public void setFntMetodoobjetos_1(Set<FntMetodoobjeto> fntMetodoobjetos_1) {
		this.fntMetodoobjetos_1 = fntMetodoobjetos_1;
	}

	@ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "bcdColunases")
	public Set<FntMetodofuncaoglobal> getFntMetodofuncaoglobals() {
		return this.fntMetodofuncaoglobals;
	}

	public void setFntMetodofuncaoglobals(
			Set<FntMetodofuncaoglobal> fntMetodofuncaoglobals) {
		this.fntMetodofuncaoglobals = fntMetodofuncaoglobals;
	}

	@ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
	@JoinTable(name = "abf_metodofuncaocoluna", schema = "public", joinColumns = { @JoinColumn(name = "bcd_colunas_id", nullable = false, updatable = false) }, inverseJoinColumns = { @JoinColumn(name = "fnt_metodofuncaoglobal_id", nullable = false, updatable = false) })
	public Set<FntMetodofuncaoglobal> getFntMetodofuncaoglobals_1() {
		return this.fntMetodofuncaoglobals_1;
	}

	public void setFntMetodofuncaoglobals_1(
			Set<FntMetodofuncaoglobal> fntMetodofuncaoglobals_1) {
		this.fntMetodofuncaoglobals_1 = fntMetodofuncaoglobals_1;
	}

	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "bcdColunas")
	public Set<AbdStroredprocedureinferencia> getAbdStroredprocedureinferencias_1() {
		return this.abdStroredprocedureinferencias_1;
	}

	public void setAbdStroredprocedureinferencias_1(
			Set<AbdStroredprocedureinferencia> abdStroredprocedureinferencias_1) {
		this.abdStroredprocedureinferencias_1 = abdStroredprocedureinferencias_1;
	}

	@ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "bcdColunases")
	public Set<FntMetodoclasse> getFntMetodoclasses() {
		return this.fntMetodoclasses;
	}

	public void setFntMetodoclasses(Set<FntMetodoclasse> fntMetodoclasses) {
		this.fntMetodoclasses = fntMetodoclasses;
	}

	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "bcdColunas")
	public Set<BcdColunareferencia> getBcdColunareferencias() {
		return this.bcdColunareferencias;
	}

	public void setBcdColunareferencias(
			Set<BcdColunareferencia> bcdColunareferencias) {
		this.bcdColunareferencias = bcdColunareferencias;
	}

	@ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
	@JoinTable(name = "abf_metodoclassecoluna", schema = "public", joinColumns = { @JoinColumn(name = "bcd_colunas_id", nullable = false, updatable = false) }, inverseJoinColumns = { @JoinColumn(name = "fnt_metodoclasse_id", nullable = false, updatable = false) })
	public Set<FntMetodoclasse> getFntMetodoclasses_1() {
		return this.fntMetodoclasses_1;
	}

	public void setFntMetodoclasses_1(Set<FntMetodoclasse> fntMetodoclasses_1) {
		this.fntMetodoclasses_1 = fntMetodoclasses_1;
	}

	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "bcdColunas")
	public Set<BcdColunareferencia> getBcdColunareferencias_1() {
		return this.bcdColunareferencias_1;
	}

	public void setBcdColunareferencias_1(
			Set<BcdColunareferencia> bcdColunareferencias_1) {
		this.bcdColunareferencias_1 = bcdColunareferencias_1;
	}

	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "bcdColunas")
	public Set<BcdColunareferencia> getBcdColunareferencias_2() {
		return this.bcdColunareferencias_2;
	}

	public void setBcdColunareferencias_2(
			Set<BcdColunareferencia> bcdColunareferencias_2) {
		this.bcdColunareferencias_2 = bcdColunareferencias_2;
	}
	
	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "bcdColunas")
	public Set<AbfMetodoobjetocoluna> getAbfMetodoObjetoColuna() {
		return this.abfMetodoObjetoColuna;
	}
	
	public void setAbfMetodoObjetoColuna(Set<AbfMetodoobjetocoluna> abfMetodoObjetoColuna) {
		this.abfMetodoObjetoColuna = abfMetodoObjetoColuna;
	}

}